<!DOCTYPE html>
<style>
  text {
    font-size: 50px;
    font-style: italic;
  }
  rect {
    stroke-width: 1px;
    stroke: green;
    fill: transparent;
  }
  #middleGlyphOverhang {
    font-family: cursive;
  }
</style>
No glyphs should extend outside the rects.<br>
<svg id="svg" width="700" height="500">
  <defs>
    <path id="straightPath" d="M50 100 L 400 100"/>
    <path id="backwardsPath" d="M400 150 L 50 150"/>
    <path id="slantedPath" d="M50 250 L 400 350"/>
    <path id="middleGlyphOverhangPath" d="M50 450 L 400 450"/>
  </defs>

  <text id="straightText">
    <textPath xlink:href="#straightPath">ffffffffffffffffffffffff</textPath>
  </text>

  <text id="backwardsText">
    <textPath xlink:href="#backwardsPath">ffffffffffffffffffffffff</textPath>
  </text>

  <text id="slantedText">
    <textPath xlink:href="#slantedPath">ffffffffffffffffffffffff</textPath>
  </text>

  <text id="middleGlyphOverhang">
    <textPath xlink:href="#middleGlyphOverhangPath">'faQ'</textPath>
  </text>
</svg>
<script>
  [straightText, backwardsText, slantedText, middleGlyphOverhang].forEach(function (textElement) {
    var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
    rect.setAttribute('x', textElement.getBBox().x);
    rect.setAttribute('y', textElement.getBBox().y);
    rect.setAttribute('width', textElement.getBBox().width);
    rect.setAttribute('height', textElement.getBBox().height);
    document.getElementById('svg').appendChild(rect);
  });
</script>
